home *** CD-ROM | disk | FTP | other *** search
/ Aminet 31 / Aminet 31 (1999)(Schatztruhe)[!][Jun 1999].iso / Aminet / dev / gui / gui4cli.lha / Gui4Cli / Ext / GCView / gcview.gc < prev    next >
Text File  |  1999-04-21  |  16KB  |  736 lines

  1. G4C
  2.  
  3. ; ******************** This is a Gui4Cli gui *********************
  4.  
  5. ; - You need Gui4Cli version 3.7+ to run it 
  6. ; - Get it from Aminet or <http://users.hol.gr/~dck/gcmain.htm>
  7.  
  8. ; ****************************************************************
  9.  
  10. ; TAB size is 3
  11.  
  12. ; This gui works fine, but it is still a long way from finished.
  13. ; It does however, make gcview easier to use. Feel free to change it..
  14.  
  15. ; ================================================================
  16.  
  17. WINBIG -1 -10 640 95 ''  ; note -10 for top (see guide)
  18. wintype 00001100
  19. screen GCView
  20. ; resinfo 8 640 256
  21. BOX 0 0 0 0 out button
  22.  
  23. xOnLoad
  24.     Local scheight/winheight/barheight
  25.  
  26.     screentog = 0    ; screen2front toggle
  27.     loadedas = NORMAL
  28.     start     = 0
  29.     frames = 60
  30.     file = ''
  31.     loadall = ON
  32.     andir = PINGPONG
  33.     dmode = BG
  34.  
  35.     extract #this guipath mypath
  36.  
  37.     palette = 0
  38.     setgad #this 20 hide ; palette lv
  39.     JoinFile $mypath Palettes PalPath
  40.     lvuse #this 20
  41.     lvdir #$PalPath
  42.  
  43.     fcount = 0
  44.     savepath = T:
  45.     savebase = GCPic
  46.     savename = ''
  47.  
  48.     makescreen GCView 3 'Gui4Cli Gui 4 GCView by dck@hol.gr'
  49.  
  50.     ; start gcview - should be in the same dir as us
  51.     ifexists port ~gcview
  52.         joinfile $mypath gcview gcvname
  53.         run $gcvname
  54.         wait port gcview 100
  55.         if $$retcode > 0
  56.             ezreq 'Could not launch GCView!\n' Abort ''
  57.             guiquit #this
  58.         endif
  59.     endif
  60.  
  61.     ; get our screen height
  62.     scheight     = 256
  63.     barheight = 12
  64.     call gcview info pubscreen GCView
  65.     tempvar = $$call.ret
  66.     parsevar tempvar
  67.     if $$parse.total > 3
  68.         scheight     = $$parse.3
  69.         barheight = $$parse.5
  70.     endif
  71.  
  72.     ; open window right below menu bar & get actual height
  73.     ; changegad #this 0 -1 $barheight 0 95 '' ; doesn't work.. ?
  74.     guiopen #this
  75.     info gui #this
  76.     winheight = $$win.h
  77.  
  78.     ; move screen down..
  79.     scpos = $($scheight - $barheight - $winheight)
  80.     movescreen #this 0 $scpos    ; new function
  81.     call gcview set pointer on
  82.  
  83.     ; set my palette, if available
  84.     ifexists file guis:tools/palette/gray
  85.         guiload guis:tools/palette/gray gcview.gc
  86.     endif
  87.  
  88.     ; notify keys
  89.     call gcview notify RMB Gui4Cli 'gosub gcview.gc do_rmb'
  90.     ; call gcview notify R78 Gui4Cli 'gosub gcview.gc speed_inc'
  91.     ; call gcview notify R79 Gui4Cli 'gosub gcview.gc speed_dec'
  92.  
  93. xOnQuit
  94.     guiclose #this
  95.     killscreen GCView
  96.     call gcview quit force
  97.  
  98. xOnRMB
  99.     gosub #this do_rmb
  100.  
  101. ; -----------------------------------------------------------
  102. ;        RMB routines
  103. ; -----------------------------------------------------------
  104.  
  105. xRoutine do_rmb
  106.     if $screentog = 0
  107.         guiscreen gcview.gc back
  108.         screentog = 1
  109.     else
  110.         guiscreen gcview.gc front
  111.         screentog = 0
  112.     endif
  113.  
  114. ; xRoutine speed_inc
  115. ;     call gcview set speed 
  116.  
  117. ; xRoutine speed_dec
  118.  
  119.  
  120. ; -----------------------------------------------------------
  121. ;        crop & tile 
  122. ; -----------------------------------------------------------
  123.  
  124. XICON 273 0 :icn/crop
  125.     gadhelp 'Crops the picture/anim to the size you have marked'
  126.     call gcview crop mypic
  127.     guiscreen gcview.gc front
  128.  
  129. ; -----------------------------------------------------------
  130. ;    Tile 
  131. ; -----------------------------------------------------------
  132. XICON 273 15 :icn/mtile
  133.     gosub #this tilepic 1
  134.  
  135. XICON 273 30 :icn/tile
  136.     gosub #this tilepic 0
  137.  
  138. xRoutine tilepic mirror     ; if mirror=1 then do mirror tile
  139.     guiwindow #this wait
  140.  
  141.     if $type = ANIM
  142.         if $mirror = 1
  143.             call gcview tile mypic MIRROR
  144.         else
  145.             call gcview tile mypic
  146.         endif
  147.  
  148.     else
  149.         ; if there is a box, get size and crop it..
  150.         call gcview info boxsize mypic
  151.         info = $$call.ret
  152.         parsevar info
  153.         if $$parse.2 > 0
  154.             call gcview crop mypic
  155.         endif
  156.  
  157.         call gcview rename mypic brush
  158.         call gcview create mypic 640 512 8
  159.         call gcview open mypic
  160.         call gcview close brush
  161.         call gcview set palette mypic brush
  162.         if $mirror = 1
  163.             call gcview tile brush mypic MIRROR
  164.         else
  165.             call gcview tile brush mypic
  166.         endif
  167.         call gcview unload brush
  168.     endif
  169.  
  170.     guiwindow #this resume
  171.     guiscreen gcview.gc front
  172.  
  173. ; -----------------------------------------------------------
  174. ;    4 way mirror tile (for making bgnd patterns)
  175. ; -----------------------------------------------------------
  176.  
  177. XICON 273 45 :icn/mirror            ; do 4 way mirror
  178.     local w/d/h/sw/sh
  179.  
  180.     if $type = ANIM
  181.         flash ; not for anims..
  182.         stop
  183.     endif
  184.  
  185.     ; get sizes
  186.     call gcview info size mypic
  187.     size = $$call.ret
  188.     parsevar size
  189.     w = $$parse.0
  190.     h = $$parse.1
  191.     d = $$parse.2
  192.     sw == $w * 2
  193.     sh == $h * 2
  194.  
  195.     ; prepare background for tiling..
  196.     call gcview rename mypic brush
  197.     call gcview create mypic $sw $sh $d
  198.     call gcview open mypic
  199.     call gcview close brush
  200.     call gcview set palette mypic brush
  201.  
  202.     ; paste & flip & paste...
  203.     call gcview paste brush mypic 0 0
  204.     call gcview flip brush horizontal
  205.     call gcview paste brush mypic $w 0
  206.     call gcview flip brush vertical
  207.     call gcview paste brush mypic $w $h
  208.     call gcview flip brush horizontal
  209.     call gcview paste brush mypic 0 $h
  210.  
  211.     ; finished..
  212.     call gcview unload brush
  213.     guiscreen gcview.gc front
  214.  
  215. ; -----------------------------------------------------------
  216. ;        Flip and rotate buttons
  217. ; -----------------------------------------------------------
  218.  
  219. XICON 303 0 :icn/HFlip
  220.     call gcview flip mypic horizontal
  221.  
  222. XICON 303 15 :icn/VFlip
  223.     call gcview flip mypic vertical
  224.  
  225. XICON 303 30 :icn/RRotate
  226.     call gcview rotate mypic right
  227.  
  228. XICON 303 45 :icn/LRotate
  229.     call gcview rotate mypic left
  230.  
  231.  
  232. ; -----------------------------------------------------------
  233. ;    PAN
  234. ; -----------------------------------------------------------
  235.  
  236. ; ------------- Vertical
  237.  
  238. XICON 334 45 :icn/vpan
  239.     call gcview pan mypic MIRROR VERTICAL
  240.  
  241. XICON 333 30 :icn/vpanNoMirr
  242.     call gcview pan mypic VERTICAL
  243.  
  244. ; ------------ Horizintal
  245.  
  246. XICON 333 0 :icn/panNoMirr
  247.     call gcview pan mypic
  248.  
  249. XICON 333 15 :icn/pan
  250.     call gcview pan mypic MIRROR
  251.  
  252.  
  253. ; -----------------------------------------------------------
  254. ;    SAVE, QUIT...
  255. ; -----------------------------------------------------------
  256. ; ------------ normal save
  257.  
  258. XICON 605 4 :icn/save
  259.     local fname/fileline
  260.     if $file < ' '
  261.         file = T:GCPic
  262.     endif
  263.  
  264.     ; store the current line in lv, so we can go back to it
  265.     ; after refreshing the lv 
  266.     lvuse #this 1
  267.     fileline = $$lv.line
  268.  
  269.     ; try to be clever.. Use previously saved file's path
  270.     if $savename > ''
  271.         extract savename path savename
  272.         extract file file fname
  273.         joinfile $savename $fname fname
  274.     else
  275.         fname = $file
  276.     endif
  277.  
  278.     savename = ''
  279.     call gcview move pubscreen GCView 0 15
  280.     ReqFile -1 -1 300 -40 'Save current picture:' SAVE savename #$fname
  281.     call gcview move pubscreen GCView 0 $scpos
  282.  
  283.     if $savename > ''
  284.         ifexists file $savename
  285.             ezreq 'File already exists:\n- $savename\nOverwite ?' OverWrite|Cancel choice
  286.             if $choice = 0
  287.                 stop ; user cancelled
  288.             endif
  289.         endif
  290.         guiwindow #this wait
  291.         call gcview save mypic '$savename'
  292.         guiwindow #this resume
  293.  
  294.         ; refresh the dir, and go to previously current line
  295.         lvdir refresh
  296.         lvmove #$fileline
  297.         lvgo #$fileline
  298.         lvmulti on
  299.  
  300.     endif
  301.  
  302. ; ------------ Clear & quit
  303.  
  304. XICON 605 19 :icn/clear
  305.     ; unload all pics and anims (keep palettes)
  306.     call gcview unload #PIC
  307.     call gcview unload #ANIM
  308.  
  309. XICON 605 34 :icn/quit
  310.     local choice
  311.     ezreq 'Quit GCView ?' 'Quit|CANCEL' choice
  312.     if $choice = 1
  313.         guiquit #this
  314.     endif
  315.  
  316. ; ------------ Open/Close WB
  317.  
  318. XICON 605 54 :icn/wbtog
  319.     ifexists screen 'Workbench'
  320.         workbench close
  321.     else
  322.         workbench open
  323.     endif
  324.  
  325. ; -----------------------------------------------------------
  326. ;        The listview
  327. ; -----------------------------------------------------------
  328.  
  329. XLISTVIEW 4 0 210 92 "" file "" 10 DIR
  330.     gadid 1
  331.     gadfont #mono 8 000
  332.     attr lvfilter "~(#?.info)"            ; set filter - no icons
  333.     gosub #this showfile
  334.     guiscreen gcview.gc front
  335.     lvmulti none
  336.     lvmove #$$lv.line
  337.     lvmulti on
  338.  
  339. xRoutine showfile ; show $file - also used from view icon
  340.     gosub gcview.gc gettype
  341.     if $type != NONE
  342.     and $type != ANIM
  343.  
  344.         if $dmode = BG                            ; normal background
  345.             call gcview rename mypic oldpic
  346.             call gcview load $file mypic
  347.             if $$retcode > 0    ; no memory..
  348.                 call gcview unload oldpic
  349.                 call gcview load $file mypic
  350.                 call gcview open mypic
  351.             else
  352.                 call gcview open mypic
  353.                 call gcview unload oldpic
  354.             endif
  355.             if $usepalette = ON
  356.                 call gcview set palette mypic mypal
  357.             endif
  358.             bgdir = $$lv.dir
  359.             gosub #this showinfo
  360.         else                                        ; paste brush mode
  361.             gosub GCVIEW.GC pastebrush
  362.         endif
  363.  
  364.     elseif $type = ANIM
  365.         if $dmode = BG
  366.             bgdir = $$lv.dir
  367.             gosub #this playanim